import { reactive } from 'vue';

// ---- 应用代码。
export const APP_CODE = "cms";
// ---- 面包屑。
export const BREADCRUMBS = reactive([]);
// ---- 性别列表/映射。
export const SEXS = ['未知', '女', '男', '其它'], SEX_OPTIONS = [
    { value: -1, label: "未知" },
    { value: 0, label: "女" },
    { value: 1, label: "男" },
    { value: 2, label: "其它" }
]

// ---- 性别列表/映射。
export const AVATAR = "https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png";

// ---- 权限映射/权限判断。
export const authorityMap = reactive(new Map());
export const hasAuthority = (code) => {
    // ---- 如果权限映射中包含“神祇”标志键，直接返回true，因为神祇默认具备所有权限。
    if (authorityMap.has('god')) {
        return true;
    }
    // ---- 如果指定权限在权限映射中不存在，说明当前员工不存在该权限，返回false。
    const authrityCode = APP_CODE + ":" + code;
    if (!authorityMap.has(authrityCode)) {
        return false;
    }
    // ---- 如果指定权限在权限映射中存在，并且过期时间为null，说明当前员工永久具备该权限，返
    // 回true。
    const expireDatetime = authorityMap.get(authrityCode);
    if (expireDatetime == null) {
        return true;
    }
    // ---- 如果指定权限在权限映射中存在但过期时间不为null，说明当前员工只是期限具备该权限。
    // 随即判断过期时间是否 >= 当前时间，是则说明当前员工依然具备该权限并返回true；否则返回
    // false。
    return expireDatetime >= new Date();
}

